import axiosRequest from "@/api/axios-optimize"
// 需要配置 请求接口时 不加载全局动画 则 配置  noShowLoading: true
// 需要配置 缓存的接口 则 配置  cache: true 否则 配置为 false 或 不配置
// 需要配置 重复请求时 取消前面的请求 则 配置  preventDuplicateRequestsType: "cancel"
// 需要配置 重复请求时 禁用后面的请求 则 配置  preventDuplicateRequestsType: "prevent"
// 需要配置 返回数据是否添加 IS_COMPLETE 是否完成字段 则 配置  showIsComplete: true
// 需要配置 当同时请求很多接口，且还有很多接口在队列时，有接口报错，是否终止所有队列中的接口请求  removeRemainingTasksWhenError: true
// 需要配置 全路经（包括入参数据）为接口唯一标识的  则配置  fullPath: true 否则 配置为 false 或 不配置  否则仅仅以URL为唯一标识

// get 请求demo
export function getDemo(
  data = {},
  config = {
    noShowLoading: true, // 配置不展示加载动画
    preventDuplicateRequestsType: "cancel" // 配置重复请求时 取消前面的请求
  }
) {
  return axiosRequest.get(`/xiaobu-admin/getDemo`, { params: data, ...config })
}

// post 请求demo
export function postDemo(data = {}, config = {}) {
  return axiosRequest.post(`/xiaobu-admin/postDemo`, data, config)
}

// delete 请求demo1 使用data作为参数 参数不展示在  请求路径上
export function deleteDemo1(data = {}, config = {}) {
  return axiosRequest.delete(`/xiaobu-admin/deleteDemo1`, { data, ...config })
}

// delete 请求demo2 使用params作为参数 参数展示在  请求路径上
export function deleteDemo2(data = {}, config = {}) {
  return axiosRequest.delete(`/xiaobu-admin/deleteDemo2`, {
    params: data,
    ...config
  })
}

// put 请求demo
export function putDemo(data = {}, config = {}) {
  return axiosRequest.put(`/xiaobu-admin/putDemo`, data, config)
}

// patch 请求demo
export function patchDemo(data = {}, config = {}) {
  return axiosRequest.patch(`/xiaobu-admin/patchDemo`, data, config)
}

// 上传文件
export function upload(
  data = {},
  config = {
    removeRemainingTasksWhenError: true, // 当此接口报错时，阻止排队中的请求继续进行
    preventDuplicateRequestsType: "none", // 重复请求时 啥都不干
    showIsComplete: true // 展示是否全部完成字段
  }
) {
  return axiosRequest.post(`/xiaobuAdmin/common/upload`, data, config)
}

// 获取图形验证码
export function getCaptcha(
  data = {},
  config = {
    noShowLoading: true, // 不展示全局加载动画
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.get(`/xiaobuAdmin/common/getCaptcha`, {
    params: data,
    ...config
  })
}

// 登录
export function login(
  data = {},
  config = {
    noShowLoading: true, // 不展示全局加载动画
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.post(`/xiaobuAdmin/common/login`, data, config)
}

// 注销
export function logout(
  data = {},
  config = {
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.post(`/xiaobuAdmin/common/logout`, data, config)
}

// 获取用户信息
export function getUserInfo(
  data = {},
  config = {
    noShowLoading: true, // 不展示全局加载动画
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.get(`/xiaobuAdmin/common/getUserInfo`, {
    params: data,
    ...config
  })
}

// 刷新token
export function refreshToken(
  data = {},
  config = {
    isRefreshToken: true, // 刷新token接口
    noShowLoading: true, // 不展示全局加载动画
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.post(`/xiaobuAdmin/common/refreshToken`, data, config)
}

// 获取字典接口
export function getDictByDictCodeArr(data = {}, config = {}) {
  return axiosRequest.post(
    `/xiaobuAdmin/system/dictItem/elementType/getDictByDictCodeArr`,
    data,
    config
  )
}

// 获取系统配置接口
export function getSystemConfig(
  data = {},
  config = {
    preventDuplicateRequestsType: "prevent"
  }
) {
  return axiosRequest.get(`/xiaobuAdmin/system/config/getSystemConfig`, {
    params: data,
    ...config
  })
}

// 编辑用户信息
export function editUserInfo(data = {}, config = {
  preventDuplicateRequestsType: "prevent"
}) {
  return axiosRequest.post(
    `/xiaobuAdmin/common/editUserInfo`,
    data,
    config
  )
}

// 编辑用户信息
export function editPassword(data = {}, config = {
  preventDuplicateRequestsType: "prevent"
}) {
  return axiosRequest.post(
    `/xiaobuAdmin/common/editPassword`,
    data,
    config
  )
}

// 发送邮箱验证码
export function sendEmail(data = {}, config = {
  preventDuplicateRequestsType: "prevent"
}) {
  return axiosRequest.post(
    `/xiaobuAdmin/common/sendEmail`,
    data,
    config
  )
}

// 注册用户
export function register(data = {}, config = {
  preventDuplicateRequestsType: "prevent"
}) {
  return axiosRequest.post(`/xiaobuAdmin/system/user/register`, data, config)
}

// 获取导入错误原因文件
export function getImportErrorReasonFileByUuid(data = {}, config = {
  preventDuplicateRequestsType: "prevent",
  responseType: "arraybuffer"
}) {
  return axiosRequest.post(`/xiaobuAdmin/common/getImportErrorReasonFileByUuid`, data, config)
}